<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;


class ClassifiedController extends Controller
{
    /**
    *	分类管理视图页面
    *	主要用来管理商品的三级分类标签
    *	商品上架前要注册分类页面的信息
    */
    public function getIndex(Request $request){
    	$data = self::select($request -> input('search',''));
    
    	return view('admin.classified.index',['data' => $data,'search' => $request -> input('search')]);
    }
    /**
    *	定义对数据库查询的静态方法 实现多数组的层级
    *	返回多级数组 与上一级数组有关的数据在sub的建里面
    *   只能按照主类别搜索 
    */
    static public function select($search = ''){
    	// 获取所有一级分类
    	$arr = DB::table('y_classified_one') 
        -> where('classname','like','%'.$search.'%') 
        -> orderBy('ctime','desc')
        -> get();
    	
    	// 便利一级分类 将二级分类的结果插入 一级分类
    	foreach ($arr as $key => $value) {
    		// 每个数组添加一个sub的建 用来装与一级分类下的所有二级分类的信息
    		$arr[$key]['sub'] = DB::table('y_classified_two') 
            -> where('pid',$value['id']) 
            -> where('classname','like','%'.$search.'%') 
            -> orderBy('ctime','desc')
            -> get();


    		// 每个数组添加一个二级的sub建 用来装与二级废分类下的三级分类信息
    		foreach ($arr[$key]['sub'] as $keyy => $valuee) {

    			$arr[$key]['sub'][$keyy]['sub'] = DB::table('y_classified_three') 
                -> where('pid',$valuee['id']) 
                -> where('classname','like','%'.$search.'%')
                -> orderBy('ctime','desc')
                -> get();

    		}
    	}

    	return $arr;
    }
    /**
    *	执行分类添加
    */
    public function postInsert(Request $request){
    	// 收到ajax的数据进行判断
    	if(!$request -> has('pid') || !$request -> has('val') || !$request -> has('grade')) {
    		// 数据不足 不允许注册
    		return '0';
    	}
    	// 通过grade判断在那张表中进行插入 
    	switch ($request -> input('grade')) {
    		case 0: $insertTable = 'y_classified_one';
    		break;
    		case 1: $insertTable = 'y_classified_two';
    		break;
    		case 2: $insertTable = 'y_classified_three';
    		break;
    	}
    	// 准备要插入的数据
    	$data['pid'] = $request -> input('pid');
    	$data['classname'] = $request -> input('val');
    	$data['ctime'] = time();
    	// 进行插入
    	$res = DB::table($insertTable) -> insertGetId($data);
    	// 根据返回的id和表名 对新添加的数据进行查询 并返回给ajax
    	$res = DB::table($insertTable) -> where('id',$res) -> first();
        // 将res的时间戳转换为日期格式
        $res['ctime'] = date('y-m-d h:i:s',$res['ctime']);
    	// 将数组用json格式返回给ajax
    	return response() -> json($res);
    }
    /**
    *   查看分类下的商品
    */
    public function getShowgoods(Request $request){

        // 是否收到参数进行判断
        if(!$request -> has('class') || !$request -> has('id')){
            return back() -> with(['error' => '未知错误请刷新后重试']);
        }
        // 判断类别等级
        $class = '';
        switch($request -> input('class')) {
            case 1: $class = 'class1';
            break;
            case 2: $class = 'class2';
            break;
            case 3: $class = 'class3';
            break;
        }

        // 查询数据库的数据 进行分页展示
        $data = DB::table('goods_basis')

        -> where($class,$request -> input('id'))
        -> where('goodsname','like','%'.$request -> input('search','').'%')
        
        -> orderBy('status','asc')
        -> orderBy($request -> input('n','id'),'desc')

        -> paginate($request -> input('dataTables-example_length' , 10));
        return view('admin.goods.index',['data' => $data,'request' => $request -> all()]);
    }
}
